package com.hyacinth.schedule.annocation;

import java.lang.annotation.*;

/**
 * 调度注解
 */
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Scheduled {

	/**
     * 表示禁用触发器的特殊cron表达式值，允许外部禁用相应的调度方法。
	 */
	String CRON_DISABLED = "-";

	/**
     * 作业调度表达式
	 */
	String cron() default "";

    /**
     * 将解析cron表达式的时区
     */
	String zone() default "";

	/**
     * 在最后一次调用结束到下一次调用开始之间以毫秒为单位执行带注释的方法。返回以毫秒为单位的延迟
	 */
	long fixedDelay() default -1;

	/**
	 * 在调用之间以毫秒为单位执行带注释的方法，周期毫秒
	 */
	long fixedRate() default -1;


	/**
	 * 任务第一次执行前要延迟的毫秒数
	 * {@link #fixedRate()} or {@link #fixedDelay()} .
	 * @return 初始延迟(毫秒)
	 */
	long initialDelay() default -1;


}
